import { RelTypeEnum } from '../annotation/RelTypeEnum'
import { ColumnType } from './ColumnType'

export interface TableStruct {
  name: string // 属性名
  propertyType?: string // 使用时，根据属性类型 typeof 获取
  columnName?: string // 对应表列名
  type?: ColumnType // 对应表属性
  isId?: boolean // 是否是id
  autoincrement?: boolean // 如果是id，是否自增长
  // ==========
  relProperty?: string // 关联属性
  relType?: RelTypeEnum // 关联类型 ONE_TO_ONE
  targetObj?: any
}

export class IdCache {
  idName: string
  idColumnName: string
  autoincrement: boolean
}

export class TableStructCache {
  // 类名-表结构
  static structMaps: Map<string, Array<TableStruct>> = new Map()
  // 类名-表名
  static tableMaps: Map<string, string> = new Map()
  // 类名-id
  static idMaps: Map<string, IdCache> = new Map()
  // 类名-状态，是否被创建，true：已被创建
  static tableStatusMaps: Map<string, boolean> = new Map()
}